import axios from "axios";
import { ElMessage } from 'element-plus';
import router from '@/router';
import { tokenStore } from "@/stores/token";

const service = axios.create({
    baseURL: '/api'
});

//添加请求拦截器
service.interceptors.request.use(function (config) {
    // 获得pinia对象
    let userToken = tokenStore();
    // 在发送请求之前做些什么
    if (!config.url.startsWith("/login")) {
        // config.headers.token = sessionStorage.getItem("token");
        config.headers.token = userToken.getToken;
    }
    return config;
}, function (error) {
    // 对请求错误做些什么
    return Promise.reject(error);
});



service.interceptors.response.use(resp => {
    // 2xx 范围内的状态码都会触发该函数。
    // 对响应数据做点什么
    // console.log("请求头“",resp.headers.token)
    // 设置新token
    // 获得pinia对象
    let userToken = tokenStore();
    // sessionStorage.setItem('token', resp.headers.token)
    userToken.setToken(resp.headers.token)
    return resp.data;
}, error => {
    // 超出 2xx 范围的状态码都会触发该函数。
    //令牌出现问题重新登录
    if (error.response.status === 403) {
        ElMessage.error({
            message: '令牌问题，请重新登录',
            type: 'success'
        });
        sessionStorage.removeItem("token");
    }
    //跳转到登录页  
    router.replace('/login');
    return Promise.reject(error.response);
});

// 开启coike
// service.defaults.withCredentials = true;


export default service;